Tanstack Query
❓질문
Tanstack Query를 사용하는 이유를 설명해 주세요.
💡 조사하기전 내가 알고 있던 내용
Tanstack Query
는 서버 상태 관리의 복잡성을 해결하고 편리함을 제공해주는 라이브러리입니다.
첫번째로 캐싱 기능
을 지원합니다 fresh한 데이터에 기준점을 세팅해놓으면 굳이 동일한 데이터를 반복적으로 호출하지않고 캐싱된 데이터를 활용합니다.
두번째로는 Promise 객체처럼 현재 어떤 상태인지 알려주는 기능이 있습니다. useQuery()
나 useMutation()
같은 훅을 사용하면 서버 데이터와 관련된 펜딩,성공,실패 상태를 제공해줍니다.
이는 단순하게
세번째로는 복잡한 관리성을 줄여
줍니다 데이터 가져오기 , 다시 요청하기 , 무효화 등 작업에 관련된 메소드를 제공해주고 길게 늘어난 코드를 짧게 작성할수있으며 텐스택 쿼리에 대한 이해도만 있다면 훨씬 가독성이 좋아집니다.
🏫 정리한 내용
그렇다면 단점으로는 어떤것이 있을까요?
캐싱기능에 fresh한 데이터의 기준점
을 세팅한다고 위에 설명했었는데 이는 staleTime
(얼마동안 신선할지),gcTime
(얼마동안 캐시를 들고있을지)같은 옵션을 이상하게 설정할시에는 데이터 갱신 타이밍이 적절하지 않아. 최신 데이터가 사용자에게 노출되지 않거나 불필요한 요청이 발생할 수 있습니다.
두번째로는 학습 곡선
이 존재합니다 어떤 라이브러리던지 초기에 학습을 해야하는 불편함이 있는데 이는 쿼리키의 설계
, 데이터 무효화 전략
기존에 알던 데이터 호출방식과 많이 달라지고 많은 옵션덕에 초기에 학습해야하는 양이 많습니다
마지막으로 클라이언트 상태와 서버 상태간의 의존 관계가 복잡한
경우 텐스택 쿼리 만으로는 해결하기 어려울 수 있습니다. 이때는 Zustand, Redux등 별도의 상태 관리 라이브러리가 필요할 수 있습니다.